package com.company.project.model.seek;


import java.io.Serializable;

/**
 * @author cjj
 * 定义领域模型的聚合根。
 * T 聚合根标识键的数据类型，该数据类型必须实现 IEquatable(TKey)，以保证实体的唯一性。
 */
public abstract class EntityAbstract<T> implements IEntity<T>, Serializable {

    private T id;

    public EntityAbstract() {
    }

    @Override
    public T getId() {
        return this.id;
    }

    public void setId(T id) {
        this.id = id;
    }

    /**
     * 重写equals方法，实现河长内容的比较
     **/
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (this == obj) {
            return true;
        }
        if (!(obj instanceof EntityAbstract)) {
            return false;
        }
        EntityAbstract entityAbstract = (EntityAbstract) obj;
        if (this.id.equals(entityAbstract.getId())) {
            return true;
        }
        return super.equals(obj);
    }
}
